<?xml version="1.0" standalone="yes"?>
<svg width="520" height="220" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <marker id="arrow" viewBox="-1 0 12 10" refX="10.5" refY="5" markerWidth="8" markerHeight="8" orient="auto">
    <path d="M 0 0 L 10 5 L 0 10"/>
  </marker>
  <g transform="translate(0,40)">
    <!-- master -->
    <text x="60" y="30" text-anchor="end" alignment-baseline="middle">master</text>
    <path d="M70 30 H 500" stroke-width="2" stroke="black"/>
    <!-- v2.0 -->
    <g>
      <path d="M100 30 l 20 30 H 200" stroke-width="2" stroke="black" fill="transparent"/>
      <text x="110" y="60" text-anchor="end" alignment-baseline="middle">2.0</text>
      <circle cx="120" cy="60" r="5"/>
      <text x="110" y="60" text-anchor="end" alignment-baseline="middle" transform="rotate(-60 120,60)">v2.0.0-beta0</text>
      <circle cx="200" cy="60" r="5"/>
      <text x="190" y="60" text-anchor="end" alignment-baseline="middle" transform="rotate(-60 200,60)">v2.0.0</text>
    </g>
    <!-- v2.1 -->
    <g transform="translate(130,0)">
      <path d="M100 30 l 20 30 H 200" stroke-width="2" stroke="black" fill="transparent"/>
      <text x="110" y="60" text-anchor="end" alignment-baseline="middle">2.1</text>
      <circle cx="120" cy="60" r="5"/>
      <text x="110" y="60" text-anchor="end" alignment-baseline="middle" transform="rotate(-60 120,60)">v2.1.0-beta0</text>
      <circle cx="160" cy="60" r="5"/>
      <text x="150" y="60" text-anchor="end" alignment-baseline="middle" transform="rotate(-60 160,60)">v2.1.0-beta1</text>
      <circle cx="200" cy="60" r="5"/>
      <text x="190" y="60" text-anchor="end" alignment-baseline="middle" transform="rotate(-60 200,60)">v2.1.0</text>
    </g>
    <!-- v3.0 -->
    <g transform="translate(260,0)">
      <path d="M100 30 l 20 30 H 200" stroke-width="2" stroke="black" fill="transparent"/>
      <text x="110" y="60" text-anchor="end" alignment-baseline="middle">3.0</text>
      <circle cx="120" cy="60" r="5"/>
      <text x="110" y="60" text-anchor="end" alignment-baseline="middle" transform="rotate(-60 120,60)">v3.0.0-beta0</text>
      <circle cx="200" cy="60" r="5"/>
      <text x="190" y="60" text-anchor="end" alignment-baseline="middle" transform="rotate(-60 200,60)">v3.0.0</text>
    </g>
    <!-- Bug fixes -->
    <g transform="translate(160,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">bug fix</text>
      <path d="M0 0 l0,30" marker-end="url(#arrow)" stroke-dasharray="2,2" stroke="#000"/>
    </g>
    <g transform="translate(260,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">bug fix</text>
      <path d="M0 0 l0,30" marker-end="url(#arrow)" stroke-dasharray="2,2" stroke="#000"/>
    </g>
    <g transform="translate(280,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">bug fix</text>
      <path d="M0 0 l0,30" marker-end="url(#arrow)" stroke-dasharray="2,2" stroke="#000"/>
    </g>
    <g transform="translate(400,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">bug fix</text>
      <path d="M0 0 l0,30" marker-end="url(#arrow)" stroke-dasharray="2,2" stroke="#000"/>
    </g>
    <g transform="translate(430,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">bug fix</text>
      <path d="M0 0 l0,30" marker-end="url(#arrow)" stroke-dasharray="2,2" stroke="#000"/>
    </g>
    <!-- Features -->
    <g transform="translate(130,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">feature</text>
    </g>
    <g transform="translate(200,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">feature</text>
    </g>
    <g transform="translate(340,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)">feature</text>
    </g>
    <!-- Chromium update -->
    <g transform="translate(310,30)">
      <circle cx="0" cy="0" r="3"/>
      <text x="10" y="0" text-anchor="start" alignment-baseline="middle" transform="rotate(-60 0,0)"><tspan>chromium</tspan><tspan dy="10" x="10">update</tspan></text>
    </g>
    <!-- Timeline -->
    <g transform="translate(100,160)">
      <text x="50" y="0" text-anchor="middle" alignment-baseline="text-after-edge">~1 week</text>
      <path d="M0 0 l0 10 l0 -5 H100l0 -5l0 10" stroke-width="2" stroke="black" fill="transparent"/>
    </g>
    <g transform="translate(230,160)">
      <text x="50" y="0" text-anchor="middle" alignment-baseline="text-after-edge">~1 week</text>
      <path d="M0 0 l0 10 l0 -5 H100l0 -5l0 10" stroke-width="2" stroke="black" fill="transparent"/>
    </g>
    <g transform="translate(360,160)">
      <text x="50" y="0" text-anchor="middle" alignment-baseline="text-after-edge">~1 week</text>
      <path d="M0 0 l0 10 l0 -5 H100l0 -5l0 10" stroke-width="2" stroke="black" fill="transparent"/>
    </g>
  </g>
</svg>